/**
 * 与用户信息有关的Store
 */

export default{
  namespaced:true,
  
  state:()=>({
    address:JSON.parse(uni.getStorageSync('address')|| '{}'),  //用户收货地址=>取出本地数据
    token: uni.getStorageSync('token')||'',  //用户登录的 token
    userinfo:JSON.parse(uni.getStorageSync('userinfo')||'{}'), //用户的信息
    redirectInfo:null //保存购物车页面的信息对象 {openType,from}
  }),
  
  mutations:{
    // 更新 redirectInfo 字段
    updateRedirectInfo(state,info){
      state.redirectInfo=info
    },
    
    // 更新address的方法
    updateAddress(state,addressInfo){
      state.address=addressInfo
      
      // 对address赋值之后,将数据存储到本地
      this.commit('m_user/saveAddressToStorage')
    },
    
    // 将收货地址保存到本地
    saveAddressToStorage(state){
      uni.setStorageSync('address',JSON.stringify(state.address))
    },
    
    // 更新用户的信息
    updateUserInfo(state,userInfo){
      state.userinfo=userInfo
      
      // 调用存储的方法
      this.commit('m_user/saveUserInfoStorage')
    },
    
    // 本地存储个人信息
    saveUserInfoStorage(state){
      uni.setStorageSync('userinfo',JSON.stringify(state.userinfo))
    },
    
    // 更新用户token
    updataToken(state,token){
      state.token=token
      
      this.commit('m_user/saveTokenStorage')
    },
    
    // 本地存储token
    saveTokenStorage(state){
      uni.setStorageSync('token',state.token)
    }
  },
  getters:{
    // 将收货地址拼接,返回给模板使用=>直接在模板里拼接不好,所以用计算属性
    addStr(state){
      // 不想写this.address,解构出来
      const {provinceName,cityName,countyName,detailInfo}=state.address
      // 判断是否包含省这个字段
      if(!provinceName) return
      // 返回拼接后的详细地址
      return provinceName+cityName+countyName+detailInfo
    }
}
}